Jim Roskind is the author of a yacc grammar for C++. It's roughly compatible with the portion of the language implemented by USL cfront 2.0. Jim's grammar deviates from cfront (and the ARM) in a couple of what I understand to be minor ways. Ultimately any deviation from a standard is unthinkable, but the number of real programs that are interpreted differently is relatively small, so the 'consequence' of the deviation is not great.
I have used Jim's grammar when a grad student wrote a C++ templatizer mechanism (reads ANSI-C++, spits out pre-templates C++), but my expertise does not include precise knowledge of where the grammar deviates from 'official'. I have found it to parse most things correctly, but I am aware that there are differences. (is that noncommittal enough? :-)
The grammar can be accessed by anonymous ftp from the following sites:
* ics.uci.edu (128.195.1.1) in the ftp/gnu directory (even though
neither of the archives are GNU related) as:
c++grammar2.0.tar.Z and byacc1.8.tar.Z
* mach1.npac.syr.edu (128.230.7.14) in the ftp/pub/C++ directory as:
c++grammar2.0.tar.Z and byacc1.8.tar.z
Jim Roskind can be reached at jar@hq.ileaf.com or ...!uunet!leafusa!jar